import express from 'express';
const initRouter = express.Router();
import path from 'path';
import fs from 'fs';

/**
 * 校验配置是否正确:
 *  - 在初始化之前, 需要确保公钥填写在了托管平台中.
 */
initRouter.get('/', async (_req, res) => {
	// 如果存在 .git 文件夹则删除掉, 否则无法再次设置远程仓库地址.
	const readDirRes = fs.readdirSync(path.resolve(__dirname, '../../gitProject/commitProject/'));
	if (readDirRes.includes('.git')) {
		fs.rmSync(path.resolve(__dirname, '../../gitProject/commitProject/.git'), { recursive: true });
	}

	// 设置远程仓库, 并更新文件提交到本地仓库.
	try {
		await git.init().addRemote('origin', process.env.SSH_URL);
		await updateTargetFile(res);
	} catch (e) {
		return;
	}

	// 强制提交, 如果是第二次调用该接口, 此时本地的内容与远程仓库的内容不同了.
	try {
		await git.push('origin', 'master', { '--force': null });
	} catch (e: any) {
		if (e.message.includes('Auth error')) {
			return res.json(
				formatResJson({ code: 'Fail', msg: '认证失败,请配置正确公私钥后再次调用该接口校验!' })
			);
		}

		return res.json(formatResJson({ code: 'Fail', msg: e?.message }));
	}

	return res.json(formatResJson({ code: 'Success', msg: '初始化成功!' }));
});

module.exports = initRouter;
